const express = require('express')
var session = require('express-session')

const MongoStore = require('connect-mongo')
const app = express()

const options = {
  // mongoUrl: 'mongodb://admin:123456@localhost:27017/itying'
  mongoUrl: 'mongodb://localhost:27017/shop',
  // 不管发出了多少请求 在24h内只更新一次 session，除非你改变了这个 session
  touchAfter: 24 * 3600 // time period in seconds 
}

// 配置session中间件
app.set('trust proxy', 1) // trust first proxy
app.use(session({
  secret: 'keyboard cat', // 服务器端生成 session 的签名
  // name: 'itying', // 修改 session 对应 cookie 的名称
  resave: false, // 强制保存 session 即使它并没有变化
  saveUninitialized: true, // 强制将未初始化的 session 存储
  cookie: { 
    secure: false  // true 表示只有https协议才能访问 cookie
  },
  store: MongoStore.create(options)
}))

app.get('/', (req, res) => {
  // 获取
  if(req.session.username || req.session.age) {
    res.send(req.session.username + '--' + req.session.age + '-- 已登录')
  } else {
    res.send('首页')
  }
})

app.get('/login', (req, res) => {
  // 设置session
  req.session.username = '张三'
  req.session.age = 11
  res.send('执行登录')
})

app.get('/loginOut', (req, res) => {
  // 1. 设置 session 的过期时间为0，它会把所有 session 都销毁
  // req.session.cookie.maxAge=0; 
  // 2. 销毁指定 session
  // req.session.username = ''
  // 3. 销毁 session
  req.session.destroy(function(err) { 
    /*销毁 session*/ 
    res.send('退出登录')
  })
})

app.listen(3004)
